/*
已知学生类含有实例属性(姓名、学号、成绩)，实例方法（构造方法、getter方法)。
建立字符文件a.txt，第一行为一个整数(表示学生人数)，第二行开始，每行提供一个学生所需的实例属性值。
编写程序1，从a.txt输入学生人数和学生信息，建立学生数组。
将所有学生数组各元素写入二进制文件a.dat(a.dat的开头4字节为表示学生数的整数)。
编写程序2，从a.dat读出学生数据输出为字符文件b.txt(输入出格式同a.txt)。
编写程序3读入a.dat数据，用随机文件方式删除成绩<60分的学生记录并存回a.dat。
（程序2用于检查程序1和程序2的结果是否正确）
 */
//程序1
import java.io.*;
import java.util.*;

public class Demo0501 {
    public static void main(String[] args) throws IOException{
        System.out.println("程序1......");
        String TxtFile = "C:\\Users\\98317\\Desktop\\JavaExerciseCode\\exci07\\src\\a.txt";
        String DatFile = "C:\\Users\\98317\\Desktop\\JavaExerciseCode\\exci07\\src\\a.dat";
        WirtoDat(TxtFile, DatFile);
    }

    public static void WirtoDat(String TxtFile, String DatFile) throws IOException {
        Scanner cin = new Scanner(new File(TxtFile));
        int N = cin.nextInt(); //学生个数
        Student[] stu = new Student[N]; //学生数组
        for (int i = 0; i < N; ++i) {
            stu[i] = new Student(cin.next(), cin.next(), cin.nextFloat());
        }

        ObjectOutputStream oos = new ObjectOutputStream(new BufferedOutputStream(new FileOutputStream(DatFile)));
        //写入二进制文件
        oos.write(Chg.toByte(N)); //写入学生数
        for (Student x : stu) {
            oos.writeObject(x);
        }
        System.out.println("成功写入a.dat！");
        cin.close();
        oos.close();
    }
}
